امنیت در اندروید
مقدمه امنیت در گوشی اندروید
اگر بخواهیم امنیت در گوشی اندروید را به شکل کلی بررسی کنیم لازم است تا مقداری دامنه موضوع را وسیع تر کنیم.
امروزه شرکت ها و سازمان ها به دلیل استفاده از دستگاه های موبایل شخصی مانند گوشی اندروید و تبلت ها توسط کارکنانشان با چالشی به نام BYOD (bring-your-own device) روبرو شده اند .
سازمان ها و شرکت ها مجبورند که در مقابل این پدیده از اطلاعات حساس و سازمانی خود محافظت نمایند.
کارکنان به دلایل مختلفی از دستگاه های موبایل برای اتصال به شبکه داخلی سازمانی و اینترنت استفاده می کنند .
برای رسیدن به سطح قابل قبولی از امنیت در هنگام استفاده از دستگاه های موبایل شرکت ها باید استراتژی مناسبی را با تمرکز بر دستگاه ها، سیستم عامل ها، شبکه ها داشته باشند .
امنیت بیشتر در گوشی گوشی اندروید
برنامه های کاربردی، داده ها و سیاست امنیتی انتخاب کنند و بدین منظور نقش سیستم عامل گوشی های اندروید بسیار حیاتی است.
هر یک از سیستم عامل های موبایل از جمله IOS، Android و Windows دارای ویژگی ها و ملاحظات امنیتی خاص خودش است.
این در حالی است که مزایا و ویژگی های سیستم عامل ها برای مصرف کنندگان آن و حتی سازمان ها بسیار مهم است
چرا که وجود یک چالش امنیتی در آن می تواند باعث بوجود آمدن حفره بزرگی امنیتی و نشت اطلاعات سازمانی گردد.
در این مقاله سعی می شود تا کنترل های امنیتی به کار رفته در سیستم عامل گوشی اندروید معرفی گردد .
تا سازمان ها بتوانند ریسک ها و نیازمندی های امنیتی خود را به طور دقیق بشناسند .
و دستگاه های و کنترل های امنیتی متناظر با ریسک ها را برای کاهش خطرات احتمالی انتخاب نمایند.
تفاوت امنیتی گوشی اندروید با رایانه
امنیت روی پلتفرم موبایل مشابه امنیت رایانه ها است .
به دلیل پایین تر بودن مشخصات فنی و سخت افزاری و محدودیت در دسترسی به منابع روی دستگاه های موبایل در برخی موارد نمی توان از تکنولوژی های خاص امنیتی در آن استفاده کرد .
از طرفی به دلیل بسته بودن و محدود بودن در نصب نرم افزارها و سخت افزارها، سیستم های موبایل با تهدیدات امنیتی متفاوتی روبرو هستند.
معماری امنیتی اندروید بسیار شبیه یک رایانه مبتنی بر Linux است. اندروید به دلیل اینکه مبتنی بر هسته لینوکس است .
دارای همه مزایای لینوکس و برخی معایب توزیع های لینوکس است.
این در حالی است که ملاحظات امنیتی خاص یک سیستم عامل موبایل را نیز دارا است.
معماری اندروید به گونه ای است که می تواند برای وضعیت های امنیتی قوی نیز پیکربندی شود.
مروری بر معماری امنیتی اندروید
معماری اندروید به گونه ای است که پلتفرمی را بوجود آورده که می توان امنیتی را از سطح ساده تا پیشرفته سفارشی سازی نمود.
برخی شاخص ها و ویژگی های امنیتی به توسعه دهندگان برنامه ها کمک می کند تا برنامه ای با امنیت بالا را تهیه نمایند،
که می توان به موارد زیر اشاره نمود:
)Sandboxجعبه ایمنی) برنامه های کاربردی:
این ویژگی برای برنامه ها این امکان را بوجود می آورد، تا داده ها و کدهای هر برنامه، ایزوله و مستقل از برنامه دیگر اجرا شوند.
این امکان با اعمال SELinux و boot integrityتوسعه یافته است.
چارچوب برنامه های اندروید:
امکان پیاده سازی قوی با قابلیت های امنیتی متدوال از قبیل رمزنگاری، مجوز دسترسی(permission) و IPC امن، در اندروید وجود دارد.
سسیستم فایل رمزنگاری:
می تواند به منظور مقابله با سرقت دستگاه یا اطلاعات به کار رود.
تکنولوژی اعتبارسنجی ورودی ها:
تکنولوژی هایی برای کاهش ریسک های متناظر با خطاهای متداول مدیریت حافظه در اندروید تعبیه شده است مانند :
ASLR
NX
ProPolice
safe_iop
OpenBSD dlmalloc
OpenBSD calloc
linux mmap_min_addr
مجوز های دسترسی اعطا شده به کاربر برای محدود کردن دسترسی به ویژگی های سیستم و داده کاربر در نظر گرفته شده است.
مجوز دسترسی تعریف شده برای برنامه به منظور کنترل داده های برنامه، به ازاء هر برنامه وجود دارد.
شکل زیر ملاحظات و مولفه های امنیتی را در سطوح مختلف استک نرم افزاری اندروید نمایش می دهد.
نحوه امن سازی کاربری در گوشی اندروید
معماری امنیتی اندروید به گونه ای است که کاربر می تواند بدون نصب نرم افزار خاص یا اعمال هرگونه تغییرات روی تبلت یا گوشی هوشمند خود ، ازآن به صورت امن بهره برداری نماید.
هر برنامه اندروید در جعبه ایمنی خودش اجرا می شود که با این قابلیت دسترسی به اطلاعات حساس یا داده ها بدون مجوز کاربر محدود می شود.
مساله مهم این است که کاربران فقط از منابع معتبر و شناخته شده و سایت های قابل اعتماد نرم افزارهای مورد نیاز خود را دانلود و نصب نمایند .
در استفاده از منابع نامتعبر برای تامین نیازهای خود روی دستگاه های موبایل پرهیز نماید.
از آنجایی که معماری اندروید به گونه ای است که به کاربران خود این امکان را می دهد تا از منابع مختلف نرم افزارهای خود را تامین نمایند .
لذا همانند یک کاربر رایانه
باید از تولید کننده آن اطلاع و اطمینان کافی داشته باشند چرا که توسعه دهندگان نرم افزارها می توانند مجوزهای فراوانی را در هنگام نصب نرم افزار از کاربر کسب نمایند.
مساله مهم این است که در هنگام نصب برنامه کاربران به توسعه دهندگان آن اعتماد می کنند لذا باید نرم افزاری نصب گردد که فاقد بدافزار باشد.
بدین منظور گوگل مجموعه ای از خدمات را که به کاربر اجازه می دهد تا برنامه های کاربردی را شناسایی، نصب یا خرید نمایند،
تحت Google Play ارائه می دهد.
استفاده از قابلیت Bouncer برای اسکن برنامه هایی که تمایل به نصب آنها از روی منابع ناشناخته است، می تواند برای کشف بدافزارها موثر باشد.
ملاحظات و ویژگی های امنیت اندروید
از آنجایی که اندروید از محتوای فعال مانند Flash، Java، JavaScript و HTML5 پشتیبانی می کند .
لذا می تواند به بدافزارها اجازه دهد تا از طریق این حامل ها به آن حمله کنند.
سیستم عامل اندروید بسیار مورد توجه بدافزارهای موبایل است از جمله می توان به تروجان های SMS اشاره کرد
که با ارسال متن با شماره های بین المللی و نصب برنامه های جعلی و فریب می تواند بدون آگاهی کاربر از خدمات نامناسب استفاده نماید .
حتی اطلاعات شخصی وی نیز به سرقت رفته و کنترل موبایل کاربر به طور غیرمجاز از راه دور در اختیار هکر قرار بگیرد.
قابلیت روت شدن
به دلیل باز بودن پلتفرم اندروید، قابلیت روت شدن و از قفل باز شدن آن نیز متصور است .
در صورت روت شدن آن، مجوز دسترسی برای اشتراک اطلاعات بین برنامه های کاربردی نیز ممکن است بوجود آید.
این باعث میشود فایل ها قابل خواندن توسط برنامه های دیگر شود .
به منظور مقابله با این تهدیدات باید از جدیدترین و به روزترین نسخه اندروید که فاقد آسیب پذیری های شناخته شده هستند،
استفاده کرد، همچنین راه حل های امنیتی برای شناسایی کدهای مخرب و نصب برنامه ها
از طریق بانک های شناخته شده و معتبر می تواند به کاهش تهدیدات کمک نماید.
اندروید ۴٫۴ با افزایش قابلیت های SELinux روی آن و افزودن کنترل های امنیتی، سطح قابل قبولی از امنیت را بوجود آورده است.
پیاده سازی این ویژگی ها می تواند توسط سازندگان دستگاه های موبایل تغییر نماید.
آخرین راه حل های امنیتی که در اندروید نسخه ۴٫۴ (Kit Kat) برای تبلت ها و گوشی اندروید درنظر گرفته شده اند به شرح زیر است:
مدیریت گواهینامه Certificate) و افزایش امنیت (KeyStore:
اطمینان از استفاده گواهینامه های معتبر و لیست سفید گواهینامه ها و بهبود عملکرد مدیریت گواهینامه ها
همواره در حال گوش دادن:
با گفتن کلمه “OK Google” بدون لمس چیزی، جستجوی گوگل فعال می شود.
این قابلیت که در Nexus 5 وجود داشت در این نسخه استفاده شده است.
این ویژگی باعث می شود که نرم افزارهایی که به طور ناخواسته اقدام به ضبط صدا و مکالمات نمایند، غیرفعال شوند.
جلوگیری از افشای اطلاعات گرانبهای مکانی:
برای کاربرانی که آگاه به مسائل امنیتی هستند باید قابلیت افزودن اطلاعات و پرکردن فیلدها به طور خودکار را غیرفعال نمایند تا در تماس هایی که اطلاعات مکانی افراد نیز ممکن است ارسال شود، این داده ها به طور ناخواسته ارسال نشود.
یکپارچه سازی با ابر در گوشی اندروید:
یکپارچه سازی ذخیره سازی محلی و ابر به معنی ذخیره اطلاعات به صورت خودکار و همزمانی بین دستگاه، برنامه ها و ابر است.
این ویژگی باعث به اشتراک گذاری اطلاعات شرکت ها به صورت امن در داخل دستگاه با محیط ابری مانند Google Drive است.
SMS و Google Hangouts:
افراد می توانند با تنظیم SMS از آن استفاده کنند .
این در حالی است که نرم افزار Google Hangouts علاوه بر اینکه به منظور ارتباطات شخصی استفاده می شود، می تواند با انجام تنظیمات برای اهداف ارتباطی سازمانی نیز استفاده شود.
علاوه بر این ویژگی ها، سازندگان دستگاه های موبایل می توانند ویژگی های جدیدی را نیز به آن اضافه کنند. مانند برنامه
SAFE و KNOX که توسط شرکت سامسونگ برای افزایش امنیت بیشتر تولید شده اند.
کنترل های امنیت
به منظور افزایش امنیت دستگاه های موبایل در کاربری سازمانی، کنترل های امنیتی که توسط موسسه SANS در سال ۲۰۱۴ ارائه شده است، باید رعایت گردند.
از این رو این کنترل ها به شرح زیر است:
لیست دارایی های سخت افزاری که به شبکه سازمانی متصل می شوند و از منابع آن بهره برداری می کنند، تهیه شود.
دستگاه های موبایل و تبلت ها و سایر دستگاه های قابل حمل که داده ها را ذخیره و پردازش می کنند، باید شناسایی و در لیست دارایی ها مجاز قرار گرفته و امن سازی شوند.
از ابزارهای خودکار برای مانیتورینگ مستمر تجهیزات و دستگاه های موبایل به منظور عملکرد صحیح مبتنی بر میزبان استفاده کرد ”
نرم افزار آنتی ویروس .
نرم افزارهای ضدجاسوسی .
فایروال شخصی و IPS .
تمامی بدافزارهای شناسایی شده باید برای بررسی به مرکز مدیریت و تحلیل بدافزارها ارسال گردد.
از نرم افزارهای رمزنگاری معتبر و مصوب برای امنیت و حفظ اطلاعات حساس روی دستگاه های موبایل و سیستم ها استفاده نمود.
تنظیمات امنیتی استاندارد را برای سیستم عامل های دستگاه های موبایل پیاده سازی نمود که میتوان به موارد زیر اشاره کرد :
1.حذف حساب کاربری غیرضروری .
2.غیرفعال کردن سرویس های غیر ضروری .
3.نصب وصله های امنیتی .
4. بستن پورت های بکار نرفته .
5. ستفاده از سیستم های تشخیص و جلوگیری از حملات و فایروال های مبتنی بر میزبان.
6. فعال سازی کلمات عبور یا الگوی امنیتی یا پین برای دسترسی به دستگاه های موبایل .
به منظور جلوگیری از نصب نرم افزارهای غیرمجاز و اجرای تنظمیات غیرمعمول از اصل کمترین امتیاز دسترسی برای کاربران جهت دسترسی به اطلاعات استفاده گردد و تعداد کمی از کاربران با دسترسی admin تعریف شوند.
از کانال های ارتباطی امن مانند VPN که روی دستگاه های موبایل قابل تعریف است .
برای انتقال اطلاعات یا دسترسی از راه دور به سرورها و شبکه سازمانی استفاده شود .
کد نویسی
وقتی در مورد امنیت صحبت میکنیم، فقط روی صحبتمون با استفاده کنندههای نرمافزارها و اپلیکیشنها نیست.
برنامه نویسان و مدیران سیستم و … نیز باید موارد امنیتی حوزه خودشان را بشناسند و آنها را رعایت کنند.
در این مطلب توضیح داده خواهد شد که چطور نرمافزارها و اپلیکیشنهایتان را امن نگاه دارید تا از خطر کرکرها در امان باشند.
چطور با رعایت امنیت در برنامه نویسی و نوشتن کد امن، از کاربران و خودتان محافظت کنید.
- اعتبار سنجی ورودی کاربر
- محافظت در برابر حملات XSS
- محافظت در برابر حملات CSRF
- جلوگیری از حملات تزریق SQL
اعتبار سنجی دادههای ورودی کاربر
در حالی که نرمافزار خود را طراحی میکنید، شما باید در برابر دادهها یا ورودیها بد اقدامات امنیتی را نیز در نظر بگیرید.
هر چند که شما برنامهتان را در جهت خوب و برای کمک و راحت کردن کار کاربران خوبی در نظر گرفتهاید .
اما همیشه خرابکاران با دادهها یا ورودیهای بد وجود دارند که بخواهند به برنامه شما حمله کنند.
حتی ممکن است کاربری به اشتباه و ناخواسته دادهای را وارد کند که در برنامه شما خللی ایجاد شود.
بنابراین اگر شما همیشه داده های ورودی را بررسی کنید،
میتوانید از این مورد خیالتان راحت باشد و برنامه امنی بسازید.
همیشه در برنامههایتان اعتبارسنجی دادهها را لحاظ کنید.
اگر از جاوا اسکریپت برای این کار استفاده میکنید، احتمال این هست که کاربر در مرورگرش جاوا اسکریپت را غیرفعال کرده باشد.
در این مورد، برنامه شما نمی تواند دادههای کاربر را اعتبار سنجی کند.
هر چند validate کردن با جاوا اسکریپت رایج است .
ولی برای رفع کردن این نوع مشکلها، دادههای ورودی را باید دوباره با زبانی برنامهنویسیای که مینویسید .
محافظت در برابر حملات CSRF
در حمله CSRF یا همان Cross Site Request Forgery،حمله کننده، قربانی را با نیرنگ قانع میکند تا اطلاعات حساس و مهم را در سایت یا نرمافزار بارگذاری کند و یا تراکنشی را ناخواسته انجام دهد.
این معمولا در اپلیکیشنهایی که نادرست کد زده شدهاند رخ میدهد.
برای نمونه استفاده نادرست از درخواست GET.
در حالت ایدهآل، درخواست GET برای Idempotent استفاده میشود.
Idempotent به معنی است که صفحهای میتواند چندین بار بدون ایجاد هر گونه عوارض جانبی در دسترس قرار بگیرد.
بنابراین درخواست GET فقط باید برای دسترسی به اطلاعات مورد استفاده قرار بگیرد، نه برای انجام تراکنش.
جلوگیری از حمله تزریق SQL:
برای اجرای کوئریهای پایگاه دادهتان باید از PDO استفاده کنید.
با استفاده از Parameterized Query و prepared میتوانید جلوی SQL Enjection را بگیرید.
<?php
$sql = “SELECT * FROM users WHERE name=:name and age=:age”;
$stmt = $db->prepare($sql);
$stmt->execute(array(“:name” => $name, “:age” => $age));
در کد بالا، ما برای پارامترهای اسم دار :name و :age از prepare استفاده کردیم. که باعث میشود
موتور پایگاه داده، کوئری را pre-compile کند و بعد مقادیر را به پارامترهای اسم دار انتساب دهد.
وقتی تابع execute() را فراخوانی شد، کوئری با مقادیر واقعی پارامترهای نامدار اجرا میشود.
اگر با این روش کد بنویسید، خرابکار نمیتواند SQL مخرب را به عنوان کوئری تزریق کند و پایگاه داده شما امن میماند.
کنترل خطا
وقتی در حال توسعه یک اپلیکیشن هستید، مشاهده error ها مفید است و شما را در مسیر صحیح توسعه قرار میدهد.
اما وقتی نرمافزار خودتان را در اختیار کاربر نهایی قرار میدهید، باید حتما نمایش خطاها را برای او مخفی کنید.
اگر خطایی رخ بدهد و این خطا برای کاربر نمایش داده شود ممکن است نرمافزار یا اپلیکیشن شما را آسیب پذیر کند.
به هر حال بهترین راه، انجام تنظیمات جداگانه برای سرورهای توسعه و عمومی است.
در حالت نمایش برای عموم باید دو گزینه display_errors وdisplay_start_up_errors در تنظیمات php.ini به حالت Off باشد.
تنظیمات error_reporting و log_errors در حالتی قرار دهید که کاربران به خطاها دسترسی نداشته باشند.
شما میتوانید از set_error_handler برای سفارشی کردن نمایش خطاها استفاده کنید.
البته این گزینه محدودیتهایی دارد. شما میتوانید خطاهای استانداری که PHP تولید میکند را کنترل کنید،
ولی برای مثال نمیتوانید خطاهای E_CORE_ERROR ، E_STRICT یا E_COMPILER_ERROR را کنترل کنید.
برای کنترل خطا، باید Exception ها را با try/catch کنترل کنید.
ارتباط با ما
برای خرید گوشی ، تبلت ، لوازم جانبی ، قطعات موبایل و تبلت و دیگر اجناس با مناسب ترین قیمت وارد سایت Digi2030 شوید .
اطلاع از آخرین اخبار تکنولوژی ، آنباکس ، فروش های ویژه و تخفیفات از طریق صفحه اینستاگرام سایت Digi2030 .
مراجع
Security Tips | Android Developers. (2014). Retrieved from http://developer.android.com/training/articles/securitytips.html
Citrix. (2014). BYOD and Information Security. Fort Lauderdale, FL, USA: Citrix Systems, Inc. Retrieved from http://citrix.com
SANS. (2014). The Critical Security Controls for Effective Cyber Defense-Version 5.0. SANS Institute.
Security | Android Developers. (2014). Retrieved from https://source.android.com/devices/tech/security
هیچ نقد و بررسی یافت نشد یک شناسه نقد و بررسی معتبر وارد کنید.